package com.example.education.service;

import com.example.education.exception.ParamException;
import com.example.education.model.Course;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

/**
 * 	资源模块：提供对资源的上传，下架，分类，查询的接口。
 */
public interface CourseService {

    /**
     * 上传课程
     * @param course 资源信息
     * @return 是否成功
     */
    boolean insertCourse(MultipartFile file,Course course) throws ParamException, IOException;

    /**
     * 上传视频
     * @param courseId 课程编号
     * @return 是否成功
     */
    boolean insertCourseVideo(MultipartFile file,Integer courseId) throws ParamException;

    boolean deleteCourseVideo(Integer courseId) throws ParamException;

    /**
     * 下架资源
     * @param courseId
     * @return 是否成功
     */
    boolean deleteCourse(Integer courseId) throws ParamException;

    /**
     * 修改资源信息
     * @param course
     * @return
     */
    boolean updateCourse(Course course) throws ParamException;

    /**
     * 根据id查找资源
     * @param id
     * @return
     */
    Course getCourseById(Integer id) throws ParamException;

    /**
     * 根据id查找资源
     * @param ids
     * @return
     */
    List<Course> getCourseByIds(List<Integer> ids) throws ParamException;

    /**
     * 根据类型查找资源
     * @param cateId
     * @return
     */
    List<Course> getCourseByCateId(Integer cateId, Integer start, Integer size) throws ParamException;

    /**
     * 根据关键字查询课程
     * @param word 关键字
     * @param start
     * @param size
     * @return
     * @throws ParamException
     */
    List<Course> getCourseByWord(String word, Integer start, Integer size) throws ParamException;

    /**
     * 获取所有
     * @return
     */
    List<Course> selectAll(Integer page,Integer limit) throws ParamException;

    /**
     * 获取所有的个数
     * @return
     */
    Integer getAllCount();
}
